package main

import (
	"fmt"
	"reflect"
)

//type User struct {
//	Id   int
//	Name string
//	Age  int
//}

func main3() {
	checkType("s")
}

func checkKind(val interface{}) {
	// 获得val类型的所属分类
	kind := reflect.TypeOf(val).Kind()

	// 对于所属分类进行分支判断
	switch kind {
	case reflect.Int:
		fmt.Println("变量的类型为整数")
	case reflect.Bool:
		fmt.Println("变量的类型为布尔型")
	case reflect.String:
		fmt.Println("变量的类型为字符串")
	case reflect.Struct:
		fmt.Println("变量的类型为自定义Struct")
	default:
		fmt.Println("变量的类型为其他")
	}
}

func checkType(val interface{}) {
	// 对val的运行时类型进行分支判断
	switch val.(type) {
	case int:
		fmt.Println("变量的类型为整数")
	case bool:
		fmt.Println("变量的类型为布尔型")
	case string:
		fmt.Println("变量的类型为字符串")
	case User:
		fmt.Println("变量的类型为User")
	default:
		fmt.Println("变量的类型为其他")
	}
}
